#include "countdowntimer.h"

CountdownTimer::CountdownTimer(QObject *parent)
    : QObject(parent)
    , m_days("00")
    , m_hours("00")
    , m_minutes("00")
    , m_seconds("00")
    , m_targetYear(0)
    , m_isNewYear(false)
{
    // 创建定时器
    m_timer = new QTimer(this);
    m_timer->setInterval(1000); // 1秒
    connect(m_timer, &QTimer::timeout, this, &CountdownTimer::updateCountdown);
    
    // 立即更新一次
    updateCountdown();
    
    // 启动定时器
    m_timer->start();
    
    qDebug() << "=== CountdownTimer 初始化完成 ===";
}

void CountdownTimer::updateCountdown()
{
    // 获取当前时间
    QDateTime now = QDateTime::currentDateTime();
    int currentYear = now.date().year();
    int nextYear = currentYear + 1;
    m_targetYear = nextYear;
    
    // 设置目标时间（下一年1月1日 00:00:00）
    QDateTime targetDate(QDate(nextYear, 1, 1), QTime(0, 0, 0));
    
    // 计算时间差（秒）
    qint64 diffSeconds = now.secsTo(targetDate);
    
    qDebug() << "=== 倒计时更新 ===";
    qDebug() << "当前时间:" << now.toString("yyyy-MM-dd hh:mm:ss");
    qDebug() << "目标时间:" << targetDate.toString("yyyy-MM-dd hh:mm:ss");
    qDebug() << "时间差(秒):" << diffSeconds;
    
    if (diffSeconds <= 0) {
        // 已经到了新年
        qDebug() << "已到新年！";
        m_days = "00";
        m_hours = "00";
        m_minutes = "00";
        m_seconds = "00";
        m_isNewYear = true;
        emit countdownChanged();
        m_timer->stop(); // 停止定时器
        return;
    }
    
    m_isNewYear = false;
    
    // 计算天、小时、分钟、秒
    int days = diffSeconds / (60 * 60 * 24);
    int hours = (diffSeconds % (60 * 60 * 24)) / (60 * 60);
    int minutes = (diffSeconds % (60 * 60)) / 60;
    int seconds = diffSeconds % 60;
    
    qDebug() << "计算结果 - 天:" << days << "时:" << hours << "分:" << minutes << "秒:" << seconds;
    
    // 格式化数字（补零）
    m_days = formatNumber(days);
    m_hours = formatNumber(hours);
    m_minutes = formatNumber(minutes);
    m_seconds = formatNumber(seconds);
    
    qDebug() << "格式化结果:" << m_days << m_hours << m_minutes << m_seconds;
    
    // 通知 QML 更新
    emit countdownChanged();
}

QString CountdownTimer::formatNumber(int number)
{
    if (number < 10) {
        return QString("0%1").arg(number);
    }
    return QString::number(number);
}

